package code

import "fmt"

func ReferenceMap1() {

	var m map[int]string
	// m 是 nil, 在设置值时会报错, 在获取(为空)和删除时不会
	// m[1] = "faith"
	fmt.Printf("m: %v\n", m)

	// m = map[int]string{}
	// 第二个可以指定容量, 不足也扩容操作
	m = make(map[int]string, 2)
	m[1] = "faith"
	fmt.Printf("m: %v\n", m)

	// map是引用类型, 会改变原始map
	changeMap(m)
	fmt.Printf("m: %v\n", m)
}

func changeMap(m map[int]string) {
	m[1] = "faith55555"
}

func ReferenceMap2() {
	m := make(map[int]string, 2)
	m[1] = "faith"
	m[2] = "faith2"
	name, ok := m[1]
	if ok {
		fmt.Printf("name: %v\n", name)
	}
	fmt.Printf("m: %v\n", m)

	delete(m, 1)
	fmt.Printf("删除后m: %v\n", m)
}
